iT邦幫忙

0

Jenkins Android 自動化測試

  • 分享至 

  • xImage
  •  

自動化是 DevOps 裡非常重要的一環,應儘可能的把流程都自動化。我們可以透過Jenkins等CI工具來達成以下的自動化。

自動單元測試
自動UI測試
自動程式碼檢核
自動發佈Beta App給測試人員
自動簽署APK
自動發佈App至Google Play
透過Slack、Email即時通知

https://ithelp.ithome.com.tw/upload/images/20200709/20111896SGrwRftBIz.png

你可以參考我的實體書,更完整的自動化流程
天瓏網路書店:Android TDD 測試驅動開發:從UnitTest、TDD到DevOps實踐

而這篇將介紹 Jenkins 這個 CI 工具來進行自動測試。
Jenkins是一個功能強大的持續整合工具,有豐富的外掛可以供開發人員使用,可以將建置專案、測試、分析及部署等工作自動化,讓App工程師可以專注在開發及撰寫單元測試。

安裝 Homebrew

Jenkins需要透過Homebrew來安裝。Homebrew是一個可以方便在Mac上管理套件的工具。
在「終端機」上輸入指令,安裝HomeBrew。
/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安裝Jenkins

HomeBrew安裝完後,接著在終端機輸入以下指令來安裝Jenkins
brew install jenkins
安裝完成後,輸入啟動 Jenkins的指令:
brew services start jenkins

啟動完成後,在瀏覽器輸入網址 http://127.0.0.1:8080/就可以開啟Jenkins。在第一次啟用時需要輸入管理員密碼。
在這個目錄下 /Users/{UserName}/.jenkins/secrets/initialAdminPassword 可以找到預設的管理員密碼。
回到Unlock Jenkins的網頁上輸入 Administrator password 。
因為.jenkins是一個隱藏的資料夾,如果在目錄下看不到的話,請先開啟Finder,按下 Shift + command + >,即可顯示隱藏檔。

Jenkins啟動之後,勾選要安裝的功能後點選Install。

https://ithelp.ithome.com.tw/upload/images/20200709/201118964vUcbNCkoI.png

安裝完成後,輸入First Admin User 資料。

https://ithelp.ithome.com.tw/upload/images/20200709/20111896JvLehFIhi0.png

看到Jenkins is ready就代表完成了。
https://ithelp.ithome.com.tw/upload/images/20200709/20111896ZFJ2YKLEgm.png

環境設定

Jenkins啟動後,將會依照你的瀏覽器語言作為預設語言,Jenkins的中文翻譯還不是很完整,我們把它調整為英文。在後續的說明會比較一致。
https://ithelp.ithome.com.tw/upload/images/20200709/20111896BsKH4LvU9y.png

點選管理Jenkins,點選管理外掛程式,安裝Locale。
https://ithelp.ithome.com.tw/upload/images/20200709/20111896fKYC39MPZh.png

回到管理Jenkins裡,點選設定系統,預設語言輸入en_US,勾選下方的Ignore browser preference and force this language to all users。設定完成後,Jenkins就會成功調整為英文了。
https://ithelp.ithome.com.tw/upload/images/20200709/20111896dB9fAxCnIM.png

再次回到Jenkins首頁,就可以看到都是用英文顯示了。
https://ithelp.ithome.com.tw/upload/images/20200709/20111896UKorZOF9MA.png

設定Android Home

在Jenkins首頁,點選 Manage Jenkins,點選Configure System。在Global properties裡設定Android_Home。如果你已經安裝Android Studio,Android SDK 會被安裝在:/Users/{UserName}/Library/Android/sdk

設定ANDROID_HOME
https://ithelp.ithome.com.tw/upload/images/20200709/20111896RnJYC5NGMo.png

管理外掛程式

Jenkins可以透過安裝不同的外掛來強化功能。
安裝Gradle Plugin。Gradle可以用在Android專案的編譯、測試及檢查程式碼。安裝Gradle Plugin就可以在Jenkins執行Gradle指令。

安裝外掛Gradle Plugin
https://ithelp.ithome.com.tw/upload/images/20200709/20111896ZZ4fZPH8ls.png

安裝 Git Plugin
https://ithelp.ithome.com.tw/upload/images/20200709/20111896qtH6j1J6zY.png

安裝完之後,需要再設定git路徑。在Manage Jenkins -> Global Tool Configuration設定Git的路徑。你可以在終端機輸入$ which git,查詢git在本機的安裝路徑。
https://ithelp.ithome.com.tw/upload/images/20200709/20111896xEBVPI0Jqr.png

自動建置Android專案

當開發人員將程式碼合併到儲存庫時,我們希望Jenkins能自動從Git Server下載程式碼並建置。這個建置是非常基本且重要的,當有程式碼提交而無法編譯成功時,你可以馬上發現錯誤。越早發現,就越早修正。
Jenkins首頁的左邊功能列,點選New Item(新增作業)。
https://ithelp.ithome.com.tw/upload/images/20200709/20111896aZvyhmf5l6.png

輸入Item Name,也就是作業名稱,點選 Freestyle project 後,再點選下方的「OK」。
https://ithelp.ithome.com.tw/upload/images/20200709/20111896xEIFvAp00s.png

Source Code Management
在Source Code Management的Repository Url 填入Git Repository 網址。如果你的Repository不是公開的,則需要在Credentials新增帳號及密碼資訊。接著在Branch Specifier 輸入要Pull的分支。
https://ithelp.ithome.com.tw/upload/images/20200709/20111896MwUF5DJZNz.png

Builder Trigger (建置觸發程序)
設定完程式碼儲存庫的路徑後,接著從Builder Trigger去設定執行的時機,勾選Poll SCM。我們先指定每10分鐘執行一次。
https://ithelp.ithome.com.tw/upload/images/20200709/20111896wXMFYvGRzF.png

Schedule裡的5個數字依序為:
分:一小時中的第幾分鐘。
時:一天中的第幾小時。
日:一個月的第幾天。
月:一年中的第幾月。
星期:星期幾,0、7都代表星期日。
*代表適用所有數字

例:每天晚上8點建置
0 20 * * *

例:每30分建置一次
H/30 * * * *

例:週一到週五,每天的9:00~18:00,每隔兩小時建置一次
0 9–18/2 * * 1–5

建置專案

接著設定建置專案,在Build裡點選 Add build step ,接著選擇Invoke Gradle script,這表示著我們將使用Gradle指令來建置專案。
https://ithelp.ithome.com.tw/upload/images/20200709/20111896y2ewJcyCq9.png

選擇Use Gradle wrapper,在Tasks 輸入指令 build,這裡的build 指令就如同你在Android Studio 上執行build Project是一樣的。
https://ithelp.ithome.com.tw/upload/images/20200709/20111896TUGKn3Ff48.png

儲存後,Jenkins專案內容頁。點選Build Now,就會馬上開始建置了。
https://ithelp.ithome.com.tw/upload/images/20200709/20111896vrJO1czsEL.png

執行之後,在Build History可以看到正在建置中。第一次建置通常會花比較多時間,因為還要從程式碼儲存庫下載程式碼。
https://ithelp.ithome.com.tw/upload/images/20200709/20111896RWddx9v7av.png

執行完後看到藍燈,代表建置成功。藍色Icon的#1則代表第1次建置。
https://ithelp.ithome.com.tw/upload/images/20200709/201118961k67mXFbZV.png

點進去可看到詳細建置過程及結果Console Output。
https://ithelp.ithome.com.tw/upload/images/20200709/20111896E7tmxkDrAg.png

回到首頁,你可以在任務的列表,看到剛剛建立的First Build。同樣會顯示上一次的建置結果為藍燈。
https://ithelp.ithome.com.tw/upload/images/20200709/20111896Y9V92NrudV.png

S指的是Status,W指的是Weather。當S呈現紅色表示建置失敗,而W表示近期建置的狀況。
https://ithelp.ithome.com.tw/upload/images/20200709/20111896P5xlQasO5K.png

當有失敗的時候,也不要害怕,建置失敗是一件很平常的事情。而這也正是我們的目的:即早發現錯誤,並修正。如果有失敗,應儘速將失敗的建置修正,再開始新的任務。而如果無法快速修復,應儘快將它恢復到前一個可用的版本。
最後建置的專案被下載在/Users/{Use}/.jenkins/workspace/{ProjectName},你可以在這裡找到被下載的程式碼

查看測試報表
Jenkins 也能用來自動執行單元測試。建置指令build就包含建置專案與執行單元測試。你可以在 app/build/reports/tests/testDebugUnitTest/index.html 這個路徑找到單元測試的結果。
https://ithelp.ithome.com.tw/upload/images/20200709/20111896f1vN08XEhr.png

從測試報告呈現了成功及失敗的數量、測試成功的百分比。你可以依照Packages或Classes分類來看。
https://ithelp.ithome.com.tw/upload/images/20200709/20111896hYoSayK23W.png

點進去Package的Classes裡,可以再看到每一個測試案例的結果及執行時間。
https://ithelp.ithome.com.tw/upload/images/20200709/20111896Og4qxzwkW2.png

如果失敗的話,也能看到哪些測試案例是失敗的。
https://ithelp.ithome.com.tw/upload/images/20200709/2011189695BXwOz7IB.png

完整的Android自動化:你可以參考我的實體書
天瓏網路書店:Android TDD 測試驅動開發:從UnitTest、TDD到DevOps實踐
自動單元測試、自動UI測試、自動程式碼檢核、自動發佈Beta App給測試人員、自動簽署APK、自動發佈App至Google Play、透過Slack、Email即時通知。

Android 線上課程
Android 動畫入門到進階
Android UI 進階實戰(Material Design Component)

medium:
https://medium.com/@evanchen76


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言